package com.itjeffrey.autocode.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * 分页表单对象
 * 注意：进行分页查询时候，需要计算偏移量 pageForm.calCurPage()
 * <p>
 * 用法：定义一个表单数据类继承该类 如：public class UserForm extends PageForm<UserForm>{}
 * 说明：前端传过来的表单数据中除了业务数据外，还包含当前页数和每页条数
 *
 * @From: Jeffrey
 * @Date: 2020/11/9
 */
@Data
public class PageForm<T extends PageForm<?>> {

    //当前页数
    @JsonInclude(JsonInclude.Include.NON_NULL) //属性值为null时不参与序列化
    private Integer curPage;

    //每页显示的数量
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer size;

    /**
     * 计算当前页数, 方便mysql分页查询
     *
     * @return
     */
    public T calCurPage() {
        if(this.curPage == null){
            this.curPage = 1;
        }
        if(this.size == null){
            this.size = 10;
        }
        curPage = (curPage - 1) * size;
        return (T) this;
    }

}
